#ifndef CONSOLEEXECUTABLE_H
#define CONSOLEEXECUTABLE_H
#include "ExeLib.h"

class QCoreApplication;

#include "SerialExecutable.h"

class EXESHARED_EXPORT ConsoleExecutable : public SerialExecutable
{
    Q_OBJECT
public:
    explicit ConsoleExecutable(int ArgC, char * ArgV[],
                               QObject * child=0);
    ~ConsoleExecutable();
    QCoreApplication * app(void) const;

signals:
    void initialized(void);
    void setuped(void);
    void started(void);

public slots:
    void initialize(void);
    void setup(void);
    void start(void);

protected:
    virtual void doInitialize(void) = 0;
    virtual void doSetup(void) = 0;
    virtual void doStart(void) = 0;

private:
    QCoreApplication * _coreApp_p;
};

#endif // CONSOLEEXECUTABLE_H
